UNPKG

@ethsub/sol

Version:
309 lines 399 kB
{ "contractName": "ERC1155Handler", "abi": [ { "inputs": [ { "internalType": "address", "name": "bridgeAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "_bridgeAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_burnList", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_contractWhitelist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "_resourceIDToTokenContractAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_tokenContractAddressToResourceID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "contractAddress", "type": "address" } ], "name": "setBurnable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "resourceID", "type": "bytes32" }, { "internalType": "address", "name": "contractAddress", "type": "address" } ], "name": "setResource", "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": "bytes32", "name": "resourceID", "type": "bytes32" }, { "internalType": "address", "name": "depositer", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "deposit", "outputs": [ { "internalType": "bytes", "name": "metaData", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "resourceID", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "executeProposal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_burnList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToTokenContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_tokenContractAddressToResourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"metaData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"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\":\"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\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setResource\",\"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\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"bridgeAddress\":\"Contract address of previously deployed Bridge.\"}},\"deposit(bytes32,address,bytes)\":{\"params\":{\"data\":\"Consists of ABI-encoded arrays of tokenIDs and amounts.\",\"depositer\":\"Address of account making the deposit in the Bridge contract.\",\"resourceID\":\"ResourceID used to find address of token to be used for deposit.\"}},\"executeProposal(bytes32,bytes)\":{\"params\":{\"data\":\"Consists of ABI-encoded {tokenIDs}, {amounts}, {recipient}, and {transferData} of types uint[], uint[], bytes, bytes.\"}},\"setBurnable(address)\":{\"params\":{\"contractAddress\":\"Address of contract to be used when making or executing deposits.\"}},\"setResource(bytes32,address)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"withdraw(bytes)\":{\"params\":{\"data\":\"Consists of ABI-encoded {tokenAddress}, {recipient}, {tokenIDs}, {amounts}, and {transferData} of types address, address, uint[], uint[], bytes.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(bytes32,address,bytes)\":{\"notice\":\"A deposit is initiatied by making a deposit in the Bridge contract.\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"Proposal execution should be initiated when a proposal is finalized in the Bridge contract. by a relayer on the deposit's destination chain.\"},\"setBurnable(address)\":{\"notice\":\"First verifies {contractAddress} is whitelisted, then sets {_burnList}[{contractAddress}] to true.\"},\"setResource(bytes32,address)\":{\"notice\":\"First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, and {_contractWhitelist} to true for {contractAddress}.\"},\"withdraw(bytes)\":{\"notice\":\"Used to manually release ERC1155 tokens from ERC1155Safe.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/handlers/ERC1155Handler.sol\":\"ERC1155Handler\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4fc155a2f7837603d69a13cfa481eb5e7f5e02cb77e2ec9edbac30986db37988\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0855147e38b5e36288a8df73b8da49132f14ec7abb19041b0c98872263643aaa\",\"dweb:/ipfs/QmSrSysyFUYQq7hbJaJXG7EyZW6ezDBzEJx3SABp6eiJSS\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x24141d2f6b98d4cb77a8936eae8cbaad2e261d9062bdc08036096f4550092501\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b710eb003944777135f027500a5a57b479fe857849f5f467c1ef9687401e3c95\",\"dweb:/ipfs/QmcELzi6KRzAs3DXwxdsoKWRJ13KSeipKQsJgD3unctdZM\"]},\"@openzeppelin/contracts/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x1bdefceaba99e08a6c30400bc686e6380c1e914887bf5780db14f965c09aa9d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa31e8df5c7a5f3434977d3a881ee322c4e81f8486aec4bb859bebd20f23d805\",\"dweb:/ipfs/QmShFfnjPytP2ooLtDj7f2XULXgbsRj4xjrFc9qm9kRe79\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xf70bc25d981e4ec9673a995ad2995d5d493ea188d3d8f388bba9c227ce09fb82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd970f51e3a77790c2f02b5b1759827c3b897c3d98c407b3631e8af32e3dc93c\",\"dweb:/ipfs/QmPF85Amgbqjk3SNZKsPCsqCw8JfwYEPMnnhvMJUyX58je\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c\",\"dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR\"]},\"@openzeppelin/contracts/presets/ERC1155PresetMinterPauser.sol\":{\"keccak256\":\"0x79d54b5a31d16734efb0f8951be2c981e92c5ef80999bc8ad79b0f2b69fea91f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de8115cb549358e059328ea901ade257d2b6a5ed7b58b667c948b65c54593ecf\",\"dweb:/ipfs/QmPY5T994PemFwQ99Z1xH21ahRWKqy6NhkidgEGfUn4r9J\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x3fef0eeb248c7109ce0f9adce59543d8b4141b78382d3ec34db33dabdbbc13f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f704e6539b9db8b7bf08b8a1c1cb2b44519129b5659211ed5af8f2aa5f264a2f\",\"dweb:/ipfs/QmYRPbn7p8oTEKNUrd7YMMA2J8W6vUeFmCcCMGvyWdZ6UB\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155Burnable.sol\":{\"keccak256\":\"0xa5e68c47511b26ea2f0e8ad00e6121e6ce135e9c3f969ff0819e59f0d1ceb1f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c39be775bd739707cd4d1e026d6a8d60cd8876dd09547dc3ca9d9c672a03a429\",\"dweb:/ipfs/QmU3pp23qk3y6ByyWsoyeiQUW5X5rVnTQAafcsogfbZqta\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155Holder.sol\":{\"keccak256\":\"0x21428ca879b2437107322dfc1e214d25ecd6b966344961025ee412c3acfd5fc0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9747c875899d05823aede28b60ca8d3719b8c28018f397521c4ffb05041e1ac5\",\"dweb:/ipfs/QmQEQ4jJYEGFNfcngfZ3gPkcrcWYWKbo1Bq2F57scJxbmE\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155Pausable.sol\":{\"keccak256\":\"0xaa7e99ee0555145c0a6ff8a6e8fdf4ed338c0a32bb14edfeb680bf70e0125e64\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ccfe042c80623e56d4801e9c49c3b615334907dd767ec44be8623da0417b13\",\"dweb:/ipfs/QmWZVFpFjT42LTjAzf2UNR4sHAdsoxRhxvS1RkEKrVNmGn\"]},\"@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol\":{\"keccak256\":\"0x57a0e246fb1c8f9cccf91c508eafe474e40260a31de3a39019ba8312cfdf9b2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://652f100749edfc17c4afeecb9fc0941414e2cb30c57fa713736064b71f2462a8\",\"dweb:/ipfs/QmUw4AbnrnANMBDRs92CHL9rBNBYAYCT8EQxmaNZ3nkcdf\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x61321d2c86346045bf394885ee3afeecc65f9daad2694bc19110967588fd7b5d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1703b877203e0447ede72dcf73f1c4f2089b415bd1c44877904128a64fafed5b\",\"dweb:/ipfs/QmaZoYDo2FWtKcwCc9zuabU6zri8KV9xJrhU614d93sLid\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xd918cca1b659f588a6d12d05fd7196179a8b1eac9133d7f77da7ef3133e13256\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c75d578f42e2e2e427b934e6c41cc759be2d0a52155868308e915328c8feb2b\",\"dweb:/ipfs/QmbFNHtWAoNhe82Hy6yKTePWJRczqzp1APSBfLS9XfAN6e\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x2690a9b7f4f7489b8d25a4fc6bffc02ec3971fb41ed6c8b59adef2833bdab07c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8148c99452b6793ac9599abdc8bdaf4eeb47f34590beea8aa01089be14e2990c\",\"dweb:/ipfs/QmNdenmZ4EDfH9TuBas3pHeGuZvDNo2rsfgUj6ka8vuH37\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0x212fb1b1d4beaf74354dad9bc329f44ee3c5375ef1c32acff76b4ecefc10f1d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d21c68cb321d1c8d0fa39fd9ecb6bbe3b2f26623b0f38af280a010c916c85f23\",\"dweb:/ipfs/Qmf2P51HRC4ekDHLYfbXu5SXR33gXrWtq6oKSmfyWqVRuC\"]},\"project:/contracts/ERC1155Safe.sol\":{\"keccak256\":\"0x4992c04bc61e9181e3124e88168ee96479af3141d995bd3f73cc5bb87fc9826a\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://5feedec64963becffdec51d27afb9af379ac6417ebf6151623ed75ffa09c4a88\",\"dweb:/ipfs/QmXgT6imAPCsrsvEGmNqEc6QytPduV71Xe9cnKjsrT9Er5\"]},\"project:/contracts/handlers/ERC1155Handler.sol\":{\"keccak256\":\"0xfe27e69d0f8432f63071cab1a66404945957243098f7ae89fa058d179321f27b\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://da821ec9c5bba382fa35725138277ba4ddddd19d75db9363825bfe8276125e86\",\"dweb:/ipfs/QmeUfnwMAouBBNcsZRepT4MNbD8RB1ShQ5RLRskiiC33cS\"]},\"project:/contracts/handlers/HandlerHelpers.sol\":{\"keccak256\":\"0x9418d0646c373e028595a4a3abf5ac93948ea64efa031f1531c70a0500882d09\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://43e30989056cc8c5f0d2a26cb3a7e8a5d0d51dd2c832fb8d751c353226254871\",\"dweb:/ipfs/QmRpXPeLz7Qjh5qxMW4PyC8qkjrpEJCeCiqfobZyg28y6S\"]},\"project:/contracts/interfaces/IDepositExecute.sol\":{\"keccak256\":\"0x3623f906ae6f354cbf27ffd4eeccbfc2c3baa94783c5dd854b2e0f50db2a7c8d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://26f8ddafd8655375eeb861a033fe390b3235c4f8de9a54e0524b91d2d1992674\",\"dweb:/ipfs/QmUAsxc8j4UdaDZ5HVp73kAwLpgTqqrgZG1sX86iRKZTqv\"]},\"project:/contracts/interfaces/IERCHandler.sol\":{\"keccak256\":\"0x4384276611a789db6481e1158d92c280fe5990ec0c375df30dd5e8f8a97cbb4c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3af488536c6d8f6b3090ca9b5fa54718941604a30f58bd66db641a6599a9f296\",\"dweb:/ipfs/QmSm988tQV4XtkCQpTbf2SbdCHp8AcjYZhQLhftPFXrUf2\"]}},\"version\":1}", "bytecode": "0x60a060405234801561001057600080fd5b5060405161118b38038061118b83398101604081905261002f916100bf565b6001600160601b0319606082901b166080526100516301ffc9a760e01b610067565b610061630271189760e51b610067565b50610124565b6001600160e01b0319808216141561009a5760405162461bcd60e51b8152600401610091906100ed565b60405180910390fd5b6001600160e01b0319166000908152600460205260409020805460ff19166001179055565b6000602082840312156100d0578081fd5b81516001600160a01b03811681146100e6578182fd5b9392505050565b6020808252601c908201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604082015260600190565b60805160601c611045610146600039806102a252806104b852506110456000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637f79bea81161008c578063bc197c8111610066578063bc197c81146101a6578063c8ba6c87146101c6578063e248cff2146101e6578063f23a6e61146101f9576100cf565b80637f79bea814610160578063b07e54bb14610173578063b8fa373614610193576100cf565b806301ffc9a7146100d457806307b7ed99146100fd5780630968f264146101125780630a6d55d814610125578063318c136e146101455780636a70d0811461014d575b600080fd5b6100e76100e2366004610c4e565b61020c565b6040516100f49190610e1e565b60405180910390f35b61011061010b366004610840565b61022b565b005b610110610120366004610c76565b61023f565b610138610133366004610b63565b610285565b6040516100f49190610d17565b6101386102a0565b6100e761015b366004610840565b6102c4565b6100e761016e366004610840565b6102d9565b610186610181366004610baa565b6102ee565b6040516100f49190610e47565b6101106101a1366004610b7b565b6103a4565b6101b96101b4366004610949565b6103ba565b6040516100f49190610e32565b6101d96101d4366004610840565b6103cb565b6040516100f49190610e29565b6101106101f4366004610c04565b6103dd565b6101b96102073660046109f3565b61049c565b6001600160e01b03191660009081526004602052604090205460ff1690565b6102336104ad565b61023c816104f7565b50565b6102476104ad565b6000806060806060858060200190518101906102639190610863565b93985091965094509250905061027d853086868686610553565b505050505050565b6000602081905290815260409020546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205460ff1681565b60026020526000908152604090205460ff1681565b60606102f86104ad565b60608061030784860186610a5a565b60008981526020819052604090205491935091506001600160a01b03168061034a5760405162461bcd60e51b815260040161034190610ed5565b60405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff161561037c57610377818885856105c4565b610399565b610399818830868660405180602001604052806000815250610553565b505050949350505050565b6103ac6104ad565b6103b68282610624565b5050565b63bc197c8160e01b95945050505050565b60016020526000908152604090205481565b6103e56104ad565b60608080806103f685870187610abb565b60208083015160008d81528083526040808220546001600160a01b031680835260029094529020549599509397509195509350909160ff1661044a5760405162461bcd60e51b815260040161034190610f17565b6001600160a01b03811660009081526003602052604090205460ff16156104805761047b818360601c888887610671565b610491565b61049181308460601c898988610553565b505050505050505050565b63f23a6e6160e01b95945050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104f55760405162461bcd60e51b815260040161034190610e5a565b565b6001600160a01b03811660009081526002602052604090205460ff1661052f5760405162461bcd60e51b815260040161034190610e91565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b604051631759616b60e11b815286906001600160a01b03821690632eb2c2d6906105899089908990899089908990600401610d2b565b600060405180830381600087803b1580156105a357600080fd5b505af11580156105b7573d6000803e3d6000fd5b5050505050505050505050565b604051631ac8311560e21b815284906001600160a01b03821690636b20c454906105f690879087908790600401610d89565b600060405180830381600087803b15801561061057600080fd5b505af1158015610491573d6000803e3d6000fd5b60008281526020818152604080832080546001600160a01b039095166001600160a01b0319909516851790559282526001808252838320949094556002905220805460ff19169091179055565b604051630fbfeffd60e11b815285906001600160a01b03821690631f7fdffa906106a5908890889088908890600401610dc9565b600060405180830381600087803b1580156106bf57600080fd5b505af11580156106d3573d6000803e3d6000fd5b50505050505050505050565b600082601f8301126106ef578081fd5b81356107026106fd82610f86565b610f5f565b81815291506020808301908481018184028601820187101561072357600080fd5b60005b8481101561074257813584529282019290820190600101610726565b505050505092915050565b600082601f83011261075d578081fd5b815161076b6106fd82610f86565b81815291506020808301908481018184028601820187101561078c57600080fd5b60005b848110156107425781518452928201929082019060010161078f565b60008083601f8401126107bc578182fd5b50813567ffffffffffffffff8111156107d3578182fd5b6020830191508360208285010111156107eb57600080fd5b9250929050565b600082601f830112610802578081fd5b81356108106106fd82610fa6565b915080825283602082850101111561082757600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215610851578081fd5b813561085c81610ffa565b9392505050565b600080600080600060a0868803121561087a578081fd5b855161088581610ffa565b602087015190955061089681610ffa565b604087015190945067ffffffffffffffff808211156108b3578283fd5b6108bf89838a0161074d565b945060608801519150808211156108d4578283fd5b6108e089838a0161074d565b935060808801519150808211156108f5578283fd5b508601601f81018813610906578182fd5b80516109146106fd82610fa6565b818152896020838501011115610928578384fd5b610939826020830160208601610fca565b8093505050509295509295909350565b600080600080600060a08688031215610960578081fd5b853561096b81610ffa565b9450602086013561097b81610ffa565b9350604086013567ffffffffffffffff80821115610997578283fd5b6109a389838a016106df565b945060608801359150808211156109b8578283fd5b6109c489838a016106df565b935060808801359150808211156109d9578283fd5b506109e6888289016107f2565b9150509295509295909350565b600080600080600060a08688031215610a0a578081fd5b8535610a1581610ffa565b94506020860135610a2581610ffa565b93506040860135925060608601359150608086013567ffffffffffffffff811115610a4e578182fd5b6109e6888289016107f2565b60008060408385031215610a6c578182fd5b823567ffffffffffffffff80821115610a83578384fd5b610a8f868387016106df565b93506020850135915080821115610aa4578283fd5b50610ab1858286016106df565b9150509250929050565b60008060008060808587031215610ad0578384fd5b843567ffffffffffffffff80821115610ae7578586fd5b610af3888389016106df565b95506020870135915080821115610b08578485fd5b610b14888389016106df565b94506040870135915080821115610b29578384fd5b610b35888389016107f2565b93506060870135915080821115610b4a578283fd5b50610b57878288016107f2565b91505092959194509250565b600060208284031215610b74578081fd5b5035919050565b60008060408385031215610b8d578182fd5b823591506020830135610b9f81610ffa565b809150509250929050565b60008060008060608587031215610bbf578182fd5b843593506020850135610bd181610ffa565b9250604085013567ffffffffffffffff811115610bec578283fd5b610bf8878288016107ab565b95989497509550505050565b600080600060408486031215610c18578081fd5b83359250602084013567ffffffffffffffff811115610c35578182fd5b610c41868287016107ab565b9497909650939450505050565b600060208284031215610c5f578081fd5b81356001600160e01b03198116811461085c578182fd5b600060208284031215610c87578081fd5b813567ffffffffffffffff811115610c9d578182fd5b610ca9848285016107f2565b949350505050565b6000815180845260208085019450808401835b83811015610ce057815187529582019590820190600101610cc4565b509495945050505050565b60008151808452610d03816020860160208601610fca565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528516602082015260a060408201819052600090610d5790830186610cb1565b8281036060840152610d698186610cb1565b90508281036080840152610d7d8185610ceb565b98975050505050505050565b6001600160a01b0384168152606060208201819052600090610dad90830185610cb1565b8281036040840152610dbf8185610cb1565b9695505050505050565b6001600160a01b0385168152608060208201819052600090610ded90830186610cb1565b8281036040840152610dff8186610cb1565b90508281036060840152610e138185610ceb565b979650505050505050565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b60006020825261085c6020830184610ceb565b6020808252601e908201527f73656e646572206d7573742062652062726964676520636f6e74726163740000604082015260600190565b60208082526024908201527f70726f766964656420636f6e7472616374206973206e6f742077686974656c696040820152631cdd195960e21b606082015260800190565b60208082526022908201527f70726f7669646564207265736f75726365494420646f6573206e6f74206578696040820152611cdd60f21b606082015260800190565b60208082526028908201527f70726f766964656420746f6b656e41646472657373206973206e6f74207768696040820152671d195b1a5cdd195960c21b606082015260800190565b60405181810167ffffffffffffffff81118282101715610f7e57600080fd5b604052919050565b600067ffffffffffffffff821115610f9c578081fd5b5060209081020190565b600067ffffffffffffffff821115610fbc578081fd5b50601f01601f191660200190565b60005b83811015610fe5578181015183820152602001610fcd565b83811115610ff4576000848401525b50505050565b6001600160a01b038116811461023c57600080fdfea26469706673582212205bcf8df36ca971afd3c04c811c19cdf96e8c6e65b9c87946176a3dcac19dc06d64736f6c634300060c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80637f79bea81161008c578063bc197c8111610066578063bc197c81146101a6578063c8ba6c87146101c6578063e248cff2146101e6578063f23a6e61146101f9576100cf565b80637f79bea814610160578063b07e54bb14610173578063b8fa373614610193576100cf565b806301ffc9a7146100d457806307b7ed99146100fd5780630968f264146101125780630a6d55d814610125578063318c136e146101455780636a70d0811461014d575b600080fd5b6100e76100e2366004610c4e565b61020c565b6040516100f49190610e1e565b60405180910390f35b61011061010b366004610840565b61022b565b005b610110610120366004610c76565b61023f565b610138610133366004610b63565b610285565b6040516100f49190610d17565b6101386102a0565b6100e761015b366004610840565b6102c4565b6100e761016e366004610840565b6102d9565b610186610181366004610baa565b6102ee565b6040516100f49190610e47565b6101106101a1366004610b7b565b6103a4565b6101b96101b4366004610949565b6103ba565b6040516100f49190610e32565b6101d96101d4366004610840565b6103cb565b6040516100f49190610e29565b6101106101f4366004610c04565b6103dd565b6101b96102073660046109f3565b61049c565b6001600160e01b03191660009081526004602052604090205460ff1690565b6102336104ad565b61023c816104f7565b50565b6102476104ad565b6000806060806060858060200190518101906102639190610863565b93985091965094509250905061027d853086868686610553565b505050505050565b6000602081905290815260409020546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205460ff1681565b60026020526000908152604090205460ff1681565b60606102f86104ad565b60608061030784860186610a5a565b60008981526020819052604090205491935091506001600160a01b03168061034a5760405162461bcd60e51b815260040161034190610ed5565b60405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff161561037c57610377818885856105c4565b610399565b610399818830868660405180602001604052806000815250610553565b505050949350505050565b6103ac6104ad565b6103b68282610624565b5050565b63bc197c8160e01b95945050505050565b60016020526000908152604090205481565b6103e56104ad565b60608080806103f685870187610abb565b60208083015160008d81528083526040808220546001600160a01b031680835260029094529020549599509397509195509350909160ff1661044a5760405162461bcd60e51b815260040161034190610f17565b6001600160a01b03811660009081526003602052604090205460ff16156104805761047b818360601c888887610671565b610491565b61049181308460601c898988610553565b505050505050505050565b63f23a6e6160e01b95945050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104f55760405162461bcd60e51b815260040161034190610e5a565b565b6001600160a01b03811660009081526002602052604090205460ff1661052f5760405162461bcd60e51b815260040161034190610e91565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b604051631759616b60e11b815286906001600160a01b03821690632eb2c2d6906105899089908990899089908990600401610d2b565b600060405180830381600087803b1580156105a357600080fd5b505af11580156105b7573d6000803e3d6000fd5b5050505050505050505050565b604051631ac8311560e21b815284906001600160a01b03821690636b20c454906105f690879087908790600401610d89565b600060405180830381600087803b15801561061057600080fd5b505af1158015610491573d6000803e3d6000fd5b60008281526020818152604080832080546001600160a01b039095166001600160a01b0319909516851790559282526001808252838320949094556002905220805460ff19169091179055565b604051630fbfeffd60e11b815285906001600160a01b03821690631f7fdffa906106a5908890889088908890600401610dc9565b600060405180830381600087803b1580156106bf57600080fd5b505af11580156106d3573d6000803e3d6000fd5b50505050505050505050565b600082601f8301126106ef578081fd5b81356107026106fd82610f86565b610f5f565b81815291506020808301908481018184028601820187101561072357600080fd5b60005b8481101561074257813584529282019290820190600101610726565b505050505092915050565b600082601f83011261075d578081fd5b815161076b6106fd82610f86565b81815291506020808301908481018184028601820187101561078c57600080fd5b60005b848110156107425781518452928201929082019060010161078f565b60008083601f8401126107bc578182fd5b50813567ffffffffffffffff8111156107d3578182fd5b6020830191508360208285010111156107eb57600080fd5b9250929050565b600082601f830112610802578081fd5b81356108106106fd82610fa6565b915080825283602082850101111561082757600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215610851578081fd5b813561085c81610ffa565b9392505050565b600080600080600060a0868803121561087a578081fd5b855161088581610ffa565b602087015190955061089681610ffa565b604087015190945067ffffffffffffffff808211156108b3578283fd5b6108bf89838a0161074d565b945060608801519150808211156108d4578283fd5b6108e089838a0161074d565b935060808801519150808211156108f5578283fd5b508601601f81018813610906578182fd5b80516109146106fd82610fa6565b818152896020838501011115610928578384fd5b610939826020830160208601610fca565b8093505050509295509295909350565b600080600080600060a08688031215610960578081fd5b853561096b81610ffa565b9450602086013561097b81610ffa565b9350604086013567ffffffffffffffff80821115610997578283fd5b6109a389838a016106df565b945060608801359150808211156109b8578283fd5b6109c489838a016106df565b935060808801359150808211156109d9578283fd5b506109e6888289016107f2565b9150509295509295909350565b600080600080600060a08688031215610a0a578081fd5b8535610a1581610ffa565b94506020860135610a2581610ffa565b93506040860135925060608601359150608086013567ffffffffffffffff811115610a4e578182fd5b6109e6888289016107f2565b60008060408385031215610a6c578182fd5b823567ffffffffffffffff80821115610a83578384fd5b610a8f868387016106df565b93506020850135915080821115610aa4578283fd5b50610ab1858286016106df565b9150509250929050565b60008060008060808587031215610ad0578384fd5b843567ffffffffffffffff80821115610ae7578586fd5b610af3888389016106df565b95506020870135915080821115610b08578485fd5b610b14888389016106df565b94506040870135915080821115610b29578384fd5b610b35888389016107f2565b93506060870135915080821115610b4a578283fd5b50610b57878288016107f2565b91505092959194509250565b600060208284031215610b74578081fd5b5035919050565b60008060408385031215610b8d578182fd5b823591506020830135610b9f81610ffa565b809150509250929050565b60008060008060608587031215610bbf578182fd5b843593506020850135610bd181610ffa565b9250604085013567ffffffffffffffff811115610bec578283fd5b610bf8878288016107ab565b95989497509550505050565b600080600060408486031215610c18578081fd5b83359250602084013567ffffffffffffffff811115610c35578182fd5b610c41868287016107ab565b9497909650939450505050565b600060208284031215610c5f578081fd5b81356001600160e01b03198116811461085c578182fd5b600060208284031215610c87578081fd5b813567ffffffffffffffff811115610c9d578182fd5b610ca9848285016107f2565b949350505050565b6000815180845260208085019450808401835b83811015610ce057815187529582019590820190600101610cc4565b509495945050505050565b60008151808452610d03816020860160208601610fca565b601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528516602082015260a060408201819052600090610d5790830186610cb1565b8281036060840152610d698186610cb1565b90508281036080840152610d7d8185610ceb565b98975050505050505050565b6001600160a01b0384168152606060208201819052600090610dad90830185610cb1565b8281036040840152610dbf8185610cb1565b9695505050505050565b6001600160a01b0385168152608060208201819052600090610ded90830186610cb1565b8281036040840152610dff8186610cb1565b90508281036060840152610e138185610ceb565b979650505050505050565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b60006020825261085c6020830184610ceb565b6020808252601e908201527f73656e646572206d7573742062652062726964676520636f6e74726163740000604082015260600190565b60208082526024908201527f70726f766964656420636f6e7472616374206973206e6f742077686974656c696040820152631cdd195960e21b606082015260800190565b60208082526022908201527f70726f7669646564207265736f75726365494420646f6573206e6f74206578696040820152611cdd60f21b606082015260800190565b60208082526028908201527f70726f766964656420746f6b656e41646472657373206973206e6f74207768696040820152671d195b1a5cdd195960c21b606082015260800190565b60405181810167ffffffffffffffff81118282101715610f7e57600080fd5b604052919050565b600067ffffffffffffffff821115610f9c578081fd5b5060209081020190565b600067ffffffffffffffff821115610fbc578081fd5b50601f01601f191660200190565b60005b83811015610fe5578181015183820152602001610fcd565b83811115610ff4576000848401525b50505050565b6001600160a01b038116811461023c57600080fdfea26469706673582212205bcf8df36ca971afd3c04c811c19cdf96e8c6e65b9c87946176a3dcac19dc06d64736f6c634300060c0033", "immutableReferences": { "9652": [ { "length": 32, "start": 674 }, { "length": 32, "start": 1208 } ] }, "sourceMap": "410:3479:44:-:0;;;750:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1045:30:48;;;;;;;768:40:2;-1:-1:-1;;;768:18:2;:40::i;:::-;282:170:12;-1:-1:-1;;;282:18:12;:170::i;:::-;750:93:44;410:3479;;1507:198:2;-1:-1:-1;;;;;;1590:25:2;;;;;1582:66;;;;-1:-1:-1;;;1582:66:2;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;1658:33:2;;;;;:20;:33;;;;;:40;;-1:-1:-1;;1658:40:2;1694:4;1658:40;;;1507:198::o;146:263:-1:-;;261:2;249:9;240:7;236:23;232:32;229:2;;;-1:-1;;267:12;229:2;83:13;;-1:-1;;;;;1508:54;;1633:35;;1623:2;;-1:-1;;1672:12;1623:2;319:74;223:186;-1:-1;;;223:186::o;753:416::-;953:2;967:47;;;641:2;938:18;;;1280:19;677:30;1320:14;;;657:51;727:12;;;924:245::o;:::-;410:3479:44;;;;;;;;;;;", "deployedSourceMap": "410:3479:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:148:2;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2170:120:48;;;;;;:::i;:::-;;:::i;:::-;;3425:462:44;;;;;;:::i;:::-;;:::i;408:69:48:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;318:39::-;;;:::i;755:42::-;;;;;;:::i;:::-;;:::i;652:51::-;;;;;;:::i;:::-;;:::i;1203:680:44:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1774:154:48:-;;;;;;:::i;:::-;;:::i;366:201:10:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;528:69:48:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2216:939:44:-;;;;;;:::i;:::-;;:::i;187:173:10:-;;;;;;:::i;:::-;;:::i;965:148:2:-;-1:-1:-1;;;;;;1073:33:2;1050:4;1073:33;;;:20;:33;;;;;;;;;965:148::o;2170:120:48:-;836:13;:11;:13::i;:::-;2254:29:::1;2267:15;2254:12;:29::i;:::-;2170:120:::0;:::o;3425:462:44:-;836:13:48;:11;:13::i;:::-;3501:20:44::1;3531:17:::0;3558:22:::1;3590:21:::0;3621:25:::1;3729:4;3718:59;;;;;;;;;;;;:::i;:::-;3657:120:::0;;-1:-1:-1;3657:120:44;;-1:-1:-1;3657:120:44;-1:-1:-1;3657:120:44;-1:-1:-1;3657:120:44;-1:-1:-1;3788:92:44::1;3657:120:::0;3830:4:::1;3657:120:::0;;;;3788:19:::1;:92::i;:::-;859:1:48;;;;;3425:462:44::0;:::o;408:69:48:-;;;;;;;;;;;;;-1:-1:-1;;;;;408:69:48;;:::o;318:39::-;;;:::o;755:42::-;;;;;;;;;;;;;;;:::o;652:51::-;;;;;;;;;;;;;;;:::o;1203:680:44:-;1318:21;836:13:48;:11;:13::i;:::-;1351:22:44::1;::::0;1437:34:::1;::::0;;::::1;1448:4:::0;1437:34:::1;:::i;:::-;1482:20;1505:45:::0;;;::::1;::::0;;;;;;;1415:56;;-1:-1:-1;1415:56:44;-1:-1:-1;;;;;;1505:45:44::1;1568:26:::0;1560:73:::1;;;;-1:-1:-1::0;;;1560:73:44::1;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1::0;;;;;1648:23:44;::::1;;::::0;;;:9:::1;:23;::::0;;;;;::::1;;1644:233;;;1687:60;1704:12;1718:9;1729:8;1739:7;1687:16;:60::i;:::-;1644:233;;;1778:88;1795:12;1809:9;1828:4;1835:8;1845:7;1854:11;;;;;;;;;;;::::0;1778:16:::1;:88::i;:::-;859:1:48;;;1203:680:44::0;;;;;;:::o;1774:154:48:-;836:13;:11;:13::i;:::-;1880:41:::1;1893:10;1905:15;1880:12;:41::i;:::-;1774:154:::0;;:::o;366:201:10:-;-1:-1:-1;;;366:201:10;;;;;;;:::o;528:69:48:-;;;;;;;;;;;;;:::o;2216:939:44:-;836:13:48;:11;:13::i;:::-;2321:22:44::1;::::0;;;2499:48:::1;::::0;;::::1;2510:4:::0;2499:48:::1;:::i;:::-;2657:4;2642:20:::0;;::::1;2636:27:::0;2558:24:::1;2706:45:::0;;;;;;;;;;;-1:-1:-1;;;;;2706:45:44::1;2769:41:::0;;;:18:::1;:41:::0;;;;;;2452:95;;-1:-1:-1;2452:95:44;;-1:-1:-1;2452:95:44;;-1:-1:-1;2452:95:44;-1:-1:-1;2636:27:44;;2769:41:::1;;2761:94;;;;-1:-1:-1::0;;;2761:94:44::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2870:23:44;::::1;;::::0;;;:9:::1;:23;::::0;;;;;::::1;;2866:283;;;2909:90;2926:12;2948:16;2940:25;;2967:8;2977:7;2986:12;2909:16;:90::i;:::-;2866:283;;;3030:108;3050:12;3072:4;3087:16;3079:25;;3106:8;3116:7;3125:12;3030:19;:108::i;:::-;859:1:48;;;;;;2216:939:44::0;;;:::o;187:173:10:-;-1:-1:-1;;;187:173:10;;;;;;;:::o;1088:124:48:-;1142:10;-1:-1:-1;;;;;1156:14:48;1142:28;;1134:71;;;;-1:-1:-1;;;1134:71:48;;;;;;;:::i;:::-;1088:124::o;2655:200::-;-1:-1:-1;;;;;2729:35:48;;;;;;:18;:35;;;;;;;;2721:84;;;;-1:-1:-1;;;2721:84:48;;;;;;;:::i;:::-;-1:-1:-1;;;;;2815:26:48;;;;;:9;:26;;;;;:33;;-1:-1:-1;;2815:33:48;2844:4;2815:33;;;2655:200::o;1636:303:36:-;1860:72;;-1:-1:-1;;;1860:72:36;;1837:12;;-1:-1:-1;;;;;1860:29:36;;;;;:72;;1890:5;;1897:9;;1908:8;;1918:7;;1927:4;;1860:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1636:303;;;;;;;:::o;2785:244::-;2979:43;;-1:-1:-1;;;2979:43:36;;2956:12;;-1:-1:-1;;;;;2979:17:36;;;;;:43;;2997:5;;3004:8;;3014:7;;2979:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2367:282:48;2453:33;:45;;;;;;;;;;;:63;;-1:-1:-1;;;;;2453:63:48;;;-1:-1:-1;;;;;;2453:63:48;;;;;;;2526:50;;;2453:63;2526:50;;;;;;:63;;;;2600:18;:35;;;:42;;-1:-1:-1;;2600:42:48;;;;;;2367:282::o;2260:297:36:-;2497:53;;-1:-1:-1;;;2497:53:36;;2474:12;;-1:-1:-1;;;;;2497:17:36;;;;;:53;;2515:9;;2526:8;;2536:7;;2545:4;;2497:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2260:297;;;;;;:::o;317:707:-1:-;;434:3;427:4;419:6;415:17;411:27;401:2;;-1:-1;;442:12;401:2;489:6;476:20;511:80;526:64;583:6;526:64;:::i;:::-;511:80;:::i;:::-;619:21;;;502:89;-1:-1;663:4;676:14;;;;651:17;;;765;;;756:27;;;;753:36;-1:-1;750:2;;;802:1;;792:12;750:2;827:1;812:206;837:6;834:1;831:13;812:206;;;3377:20;;905:50;;969:14;;;;997;;;;859:1;852:9;812:206;;;816:14;;;;;394:630;;;;:::o;1050:722::-;;1178:3;1171:4;1163:6;1159:17;1155:27;1145:2;;-1:-1;;1186:12;1145:2;1226:6;1220:13;1248:80;1263:64;1320:6;1263:64;:::i;1248:80::-;1356:21;;;1239:89;-1:-1;1400:4;1413:14;;;;1388:17;;;1502;;;1493:27;;;;1490:36;-1:-1;1487:2;;;1539:1;;1529:12;1487:2;1564:1;1549:217;1574:6;1571:1;1568:13;1549:217;;;3525:13;;1642:61;;1717:14;;;;1745;;;;1596:1;1589:9;1549:217;;2066:336;;;2180:3;2173:4;2165:6;2161:17;2157:27;2147:2;;-1:-1;;2188:12;2147:2;-1:-1;2218:20;;2258:18;2247:30;;2244:2;;;-1:-1;;2280:12;2244:2;2324:4;2316:6;2312:17;2300:29;;2375:3;2324:4;2355:17;2316:6;2341:32;;2338:41;2335:2;;;2392:1;;2382:12;2335:2;2140:262;;;;;:::o;2411:440::-;;2512:3;2505:4;2497:6;2493:17;2489:27;2479:2;;-1:-1;;2520:12;2479:2;2567:6;2554:20;2589:64;2604:48;2645:6;2604:48;:::i;2589:64::-;2580:73;;2673:6;2666:5;2659:21;2777:3;2709:4;2768:6;2701;2759:16;;2756:25;2753:2;;;2794:1;;2784:12;2753:2;22874:6;2709:4;2701:6;2697:17;2709:4;2735:5;2731:16;22851:30;22930:1;22912:16;;;2709:4;22912:16;22905:27;2735:5;2472:379;-1:-1;;2472:379::o;3588:241::-;;3692:2;3680:9;3671:7;3667:23;3663:32;3660:2;;;-1:-1;;3698:12;3660:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3750:63;3654:175;-1:-1;;;3654:175::o;3836:1196::-;;;;;;4094:3;4082:9;4073:7;4069:23;4065:33;4062:2;;;-1:-1;;4101:12;4062:2;234:6;228:13;246:41;281:5;246:41;:::i;:::-;4272:2;4330:22;;228:13;4153:82;;-1:-1;246:41;228:13;246:41;:::i;:::-;4420:2;4405:18;;4399:25;4280:82;;-1:-1;4444:18;4433:30;;;4430:2;;;-1:-1;;4466:12;4430:2;4496:89;4577:7;4568:6;4557:9;4553:22;4496:89;:::i;:::-;4486:99;;4643:2;4632:9;4628:18;4622:25;4608:39;;4444:18;4659:6;4656:30;4653:2;;;-1:-1;;4689:12;4653:2;4719:89;4800:7;4791:6;4780:9;4776:22;4719:89;:::i;:::-;4709:99;;4866:3;4855:9;4851:19;4845:26;4831:40;;4444:18;4883:6;4880:30;4877:2;;;-1:-1;;4913:12;4877:2;-1:-1;4984:22;;2965:4;2953:17;;2949:27;-1:-1;2939:2;;-1:-1;;2980:12;2939:2;3020:6;3014:13;3042:64;3057:48;3098:6;3057:48;:::i;3042:64::-;3126:6;3119:5;3112:21;3230:3;4272:2;3221:6;3154;3212:16;;3209:25;3206:2;;;-1:-1;;3237:12;3206:2;3257:39;3289:6;4272:2;3188:5;3184:16;4272:2;3154:6;3150:17;3257:39;:::i;:::-;4933:83;;;;;;4056:976;;;;;;;;:::o;5039:1119::-;;;;;;5270:3;5258:9;5249:7;5245:23;5241:33;5238:2;;;-1:-1;;5277:12;5238:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5329:63;-1:-1;5429:2;5468:22;;72:20;97:33;72:20;97:33;:::i;:::-;5437:63;-1:-1;5565:2;5550:18;;5537:32;5589:18;5578:30;;;5575:2;;;-1:-1;;5611:12;5575:2;5641:78;5711:7;5702:6;5691:9;5687:22;5641:78;:::i;:::-;5631:88;;5784:2;5773:9;5769:18;5756:32;5742:46;;5589:18;5800:6;5797:30;5794:2;;;-1:-1;;5830:12;5794:2;5860:78;5930:7;5921:6;5910:9;5906:22;5860:78;:::i;:::-;5850:88;;6003:3;5992:9;5988:19;5975:33;5961:47;;5589:18;6020:6;6017:30;6014:2;;;-1:-1;;6050:12;6014:2;;6080:62;6134:7;6125:6;6114:9;6110:22;6080:62;:::i;:::-;6070:72;;;5232:926;;;;;;;;:::o;6165:847::-;;;;;;6346:3;6334:9;6325:7;6321:23;6317:33;6314:2;;;-1:-1;;6353:12;6314:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6405:63;-1:-1;6505:2;6544:22;;72:20;97:33;72:20;97:33;:::i;:::-;6513:63;-1:-1;6613:2;6652:22;;3377:20;;-1:-1;6721:2;6760:22;;3377:20;;-1:-1;6857:3;6842:19;;6829:33;6882:18;6871:30;;6868:2;;;-1:-1;;6904:12;6868:2;6934:62;6988:7;6979:6;6968:9;6964:22;6934:62;:::i;7019:638::-;;;7190:2;7178:9;7169:7;7165:23;7161:32;7158:2;;;-1:-1;;7196:12;7158:2;7254:17;7241:31;7292:18;;7284:6;7281:30;7278:2;;;-1:-1;;7314:12;7278:2;7344:78;7414:7;7405:6;7394:9;7390:22;7344:78;:::i;:::-;7334:88;;7487:2;7476:9;7472:18;7459:32;7445:46;;7292:18;7503:6;7500:30;7497:2;;;-1:-1;;7533:12;7497:2;;7563:78;7633:7;7624:6;7613:9;7609:22;7563:78;:::i;:::-;7553:88;;;7152:505;;;;;:::o;7664:1097::-;;;;;7887:3;7875:9;7866:7;7862:23;7858:33;7855:2;;;-1:-1;;7894:12;7855:2;7952:17;7939:31;7990:18;;7982:6;7979:30;7976:2;;;-1:-1;;8012:12;7976:2;8042:78;8112:7;8103:6;8092:9;8088:22;8042:78;:::i;:::-;8032:88;;8185:2;8174:9;8170:18;8157:32;8143:46;;7990:18;8201:6;8198:30;8195:2;;;-1:-1;;8231:12;8195:2;8261:78;8331:7;8322:6;8311:9;8307:22;8261:78;:::i;:::-;8251:88;;8404:2;8393:9;8389:18;8376:32;8362:46;;7990:18;8420:6;8417:30;8414:2;;;-1:-1;;8450:12;8414:2;8480:62;8534:7;8525:6;8514:9;8510:22;8480:62;:::i;:::-;8470:72;;8607:2;8596:9;8592:18;8579:32;8565:46;;7990:18;8623:6;8620:30;8617:2;;;-1:-1;;8653:12;8617:2;;8683:62;8737:7;8728:6;8717:9;8713:22;8683:62;:::i;:::-;8673:72;;;7849:912;;;;;;;:::o;8768:241::-;;8872:2;8860:9;8851:7;8847:23;8843:32;8840:2;;;-1:-1;;8878:12;8840:2;-1:-1;1847:20;;8834:175;-1:-1;8834:175::o;9016:366::-;;;9137:2;9125:9;9116:7;9112:23;9108:32;9105:2;;;-1:-1;;9143:12;9105:2;1860:6;1847:20;9195:63;;9295:2;9338:9;9334:22;72:20;97:33;124:5;97:33;:::i;:::-;9303:63;;;;9099:283;;;;;:::o;9389:615::-;;;;;9546:2;9534:9;9525:7;9521:23;9517:32;9514:2;;;-1:-1;;9552:12;9514:2;1860:6;1847:20;9604:63;;9704:2;9747:9;9743:22;72:20;97:33;124:5;97:33;:::i;:::-;9712:63;-1:-1;9840:2;9825:18;;9812:32;9864:18;9853:30;;9850:2;;;-1:-1;;9886:12;9850:2;9924:64;9980:7;9971:6;9960:9;9956:22;9924:64;:::i;:::-;9508:496;;;;-1:-1;9906:82;-1:-1;;;;9508:496::o;10011:490::-;;;;10151:2;10139:9;10130:7;10126:23;10122:32;10119:2;;;-1:-1;;10157:12;10119:2;1860:6;1847:20;10209:63;;10337:2;10326:9;10322:18;10309:32;10361:18;10353:6;10350:30;10347:2;;;-1:-1;;10383:12;10347:2;10421:64;10477:7;10468:6;10457:9;10453:22;10421:64;:::i;:::-;10113:388;;10403:82;;-1:-1;10403:82;;-1:-1;;;;10113:388::o;10508:239::-;;10611:2;10599:9;10590:7;10586:23;10582:32;10579:2;;;-1:-1;;10617:12;10579:2;1983:20;;-1:-1;;;;;;22495:78;;23774:34;;23764:2;;-1:-1;;23812:12;10754:345;;10867:2;10855:9;10846:7;10842:23;10838:32;10835:2;;;-1:-1;;10873:12;10835:2;10931:17;10918:31;10969:18;10961:6;10958:30;10955:2;;;-1:-1;;10991:12;10955:2;11021:62;11075:7;11066:6;11055:9;11051:22;11021:62;:::i;:::-;11011:72;10829:270;-1:-1;;;;10829:270::o;11439:690::-;;11632:5;21245:12;21660:6;21655:3;21648:19;21697:4;;21692:3;21688:14;11644:93;;21697:4;11808:5;21099:14;-1:-1;11847:260;11872:6;11869:1;11866:13;11847:260;;;11933:13;;12319:37;;11260:14;;;;21503;;;;11894:1;11887:9;11847:260;;;-1:-1;12113:10;;11563:566;-1:-1;;;;;11563:566::o;12485:343::-;;12627:5;21245:12;21660:6;21655:3;21648:19;12720:52;12765:6;21697:4;21692:3;21688:14;21697:4;12746:5;12742:16;12720:52;:::i;:::-;23307:7;23291:14;-1:-1;;23287:28;12784:39;;;;21697:4;12784:39;;12575:253;-1:-1;;12575:253::o;14432:222::-;-1:-1;;;;;22647:54;;;;11359:37;;14559:2;14544:18;;14530:124::o;14661:1048::-;-1:-1;;;;;22647:54;;;11359:37;;22647:54;;15183:2;15168:18;;11359:37;22658:42;15220:2;15205:18;;15198:48;;;14661:1048;;15260:108;;15003:19;;15354:6;15260:108;:::i;:::-;15416:9;15410:4;15406:20;15401:2;15390:9;15386:18;15379:48;15441:108;15544:4;15535:6;15441:108;:::i;:::-;15433:116;;15598:9;15592:4;15588:20;15582:3;15571:9;15567:19;15560:49;15623:76;15694:4;15685:6;15623:76;:::i;:::-;15615:84;14989:720;-1:-1;;;;;;;;14989:720::o;15716:740::-;-1:-1;;;;;22647:54;;11359:37;;15999:2;16117;16102:18;;16095:48;;;15716:740;;16157:108;;15984:18;;16251:6;16157:108;:::i;:::-;16313:9;16307:4;16303:20;16298:2;16287:9;16283:18;16276:48;16338:108;16441:4;16432:6;16338:108;:::i;:::-;16330:116;15970:486;-1:-1;;;;;;15970:486::o;16463:936::-;-1:-1;;;;;22647:54;;11359:37;;16792:3;16911:2;16896:18;;16889:48;;;16463:936;;16951:108;;16777:19;;17045:6;16951:108;:::i;:::-;17107:9;17101:4;17097:20;17092:2;17081:9;17077:18;17070:48;17132:108;17235:4;17226:6;17132:108;:::i;:::-;17124:116;;17288:9;17282:4;17278:20;17273:2;17262:9;17258:18;17251:48;17313:76;17384:4;17375:6;17313:76;:::i;:::-;17305:84;16763:636;-1:-1;;;;;;;16763:636::o;17406:210::-;22329:13;;22322:21;12202:34;;17527:2;17512:18;;17498:118::o;17623:222::-;12319:37;;;17750:2;17735:18;;17721:124::o;17852:218::-;-1:-1;;;;;;22495:78;;;;12437:36;;17977:2;17962:18;;17948:122::o;18077:306::-;;18222:2;18243:17;18236:47;